package evento;

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.JTable;
import javax.swing.JTextField;

import view.ClienteJanela;
import view.OperacaoJanela;
import bean.Estado;
import clienteQuery.Cliente;
import controleCliente.ClienteBO;
import controleOperacao.OperacaoBO;
import erro.Mensagem;

public class EventoOperacao {
	/**
	 * Essa classe tem os eventos das classes:
	 * view.ClienteJanela
	 */
	
	/*
	 * atributos
	 */
	public static OperacaoBO control;
	private static int acao = ClienteBO.SALVAR_CLIENTE;
	private static Cliente cliente = null;
	

	
	 
	
	public static void addListenersJanelaCliente(OperacaoJanela operacaoJanela){
		
		operacaoJanela.setListenerBotaoSalvar(new BotaoSalvarActionListener(operacaoJanela));
		operacaoJanela.setListenerBotaoCancelar(new BotaoCancelarActionListener(operacaoJanela));
		operacaoJanela.setListenerBotaoExcluir(new BotaoExcluirActionListener(operacaoJanela));
		operacaoJanela.setListenerCliqueDuplo(new CliqueDuploActionListener(operacaoJanela));
		operacaoJanela.setListenerSoNumero(new JTextSoNumeroFocusListenet());
		
	}
	
	
		
	/**
	 * 
	 * @author shara
	 *
	 *	LISTENERS JANELA CLIENTE
	 */
	
	private static class BotaoSalvarActionListener implements ActionListener {
		
		
		private OperacaoJanela janela = null;
		
		
		
		public BotaoSalvarActionListener(OperacaoJanela janela) {
			
			this.janela = janela;
        
		}
		
		 public void actionPerformed(ActionEvent evt) {
	        		        	
	         /**
	          * PONHA AQUI O EVENTO DO BOTAO ADICIONAR
	          */
			/* if(cliente == null){
				 cliente = new Cliente();
			 }
			 
			 cliente.setNome(janela.getJTextFieldNome().getText().trim());
			
			 
			 
			 /*Campo obrigatório*/
			/* if(cliente.getNome() != null && control.campoVazio(cliente.getNome())){
				 Mensagem.mensagem(1, null, null);
			 
			 }else if(!control.existe(ClienteBO.EXISTE_NOME, cliente.getNome(), "Nome")){
					
						 	 String aux = janela.getJTextFieldCnpf().getText().trim();
						 	 /*VER SE CPF/CNPJ EXISTE*/
							/* if(aux != null && !control.campoVazio(aux)){
								 if(!control.existe(ClienteBO.EXISTE_CPF,aux, "CPF/CNPJ")){
									 cliente.setCpf_cnpj(aux);
								 }
								 
							 }
							 
							 aux = janela.getJTextFieldRg().getText().trim();
							 /*VER SE IE/RG EXISTE*/
							 /*if(aux != null && !control.campoVazio(aux)){
								 if(!control.existe(ClienteBO.EXISTE_RG,aux, "IE/RG")){
									 cliente.setIe_rg(aux);
								 }
								 
							 } 
							 
							 aux = janela.getJTextFieldEmail().getText().trim();
							 /*VER SE E-MAIL EXISTE*/
							/* if(aux != null && !control.campoVazio(aux)){
								 if(!control.existe(ClienteBO.EXISTE_EMAIL,aux, "E-mail")){
									 cliente.setEmail(aux);
								 }
								 
							 }
						 
							 cliente.setContato(janela.getJTextFieldContato().getText().trim());
							 cliente.setBairro(janela.getJTextFieldBairro().getText().trim());
							// cliente.setCelular(janela.getJTextFieldCelular().getText().trim());
							 //cliente.setTelefone(janela.getJTextFieldTelefone().getText().trim());
							// cliente.setFax(janela.getJTextFieldFax().getText().trim());
							// cliente.setCep(janela.getJTextFieldCep().getText().trim());
							 cliente.setLougradoro(janela.getJTextFieldEndereco().getText().trim());
							 cliente.setMunicipio(janela.getJTextFieldMunicipio().getText().trim());
							 cliente.setIdEstado(((Estado)janela.getJComboBoxUf().getSelectedItem()).getId());
			 
							 boolean result = false;
							 //try {
	 							 if(acao == ClienteBO.SALVAR_CLIENTE){
									 result = control.setCliente(cliente, ClienteBO.SALVAR_CLIENTE);
								
								 }else{
									 
									 result = control.setCliente(cliente, ClienteBO.EDITAR_CLIENTE);

								 }
								 
							 /*} catch (SQLException e) {
									// TODO Auto-generated catch block
									e.printStackTrace();
								} catch (ClassNotFoundException e) {
									// TODO Auto-generated catch block
									e.printStackTrace();
								}								 
							 */
							/*if(result){
								janela.limparFormulario();
								janela.getJButtonExcluir().setVisible(false);
								acao = ClienteBO.SALVAR_CLIENTE;
								cliente = null;
							}*/
							
			 }
	            
		 
			
	}

	private static class CliqueDuploActionListener extends MouseAdapter implements MouseListener {
		
		
		private OperacaoJanela janela = null;
	
		
		
		public CliqueDuploActionListener(OperacaoJanela janela) {
			
			this.janela = janela;
        
		}
		
		 public void mouseClicked(MouseEvent e) {
	        	
			 JTable table = (JTable)e.getSource();
			 
			 if (e.getClickCount() == 2) {
				/* janela.getJButtonExcluir().setVisible(true);
				 int linhaSelec = table.getSelectedRow();
				 int id = (Integer)table.getValueAt(linhaSelec, 0);
				 control.preencheFormParaEdicao(id);
				 acao = ClienteBO.EDITAR_CLIENTE;
				 System.out.print("Mudou para Editar    ");
				 cliente = new Cliente();
				 cliente.setId(id);*/
				 	            
			 }	
		 }
			
	}

	private static class BotaoCancelarActionListener implements ActionListener {
				
				
			private OperacaoJanela janela = null;
		
			
			
			public BotaoCancelarActionListener(OperacaoJanela janela) {
				
				this.janela = janela;
	        
			}
			
			 public void actionPerformed(ActionEvent evt) {
		        		        	
		         /**
		          * PONHA AQUI O EVENTO DO BOTAO ADICIONAR
		          */
				 
				 janela.getJButtonExcluir().setVisible(false);
				 janela.limparFormulario();
				
				 acao = 1;
				 
				 /*
				int id = Presenter.getInterListaAmigos().getUsuario().getId(); 
				System.out.print("Meu id :" + id);
				Vector<Amigos>s usuario = new Vector<Amigos>();
				
				usuario.add(new Amigos(1,id,null));
				
				PrtServer prt = new PrtServer(null,interAdicionarAmigo.getUsuarioParaAdicionar(),null,3,1);
				prt.setAmigos(usuario);
				
				prt = Cliente.adicionarAmigo(prt);
				if(prt != null){
					
					//Presenter.getInterListaAmigos().podeMexer(true);
					interAdicionarAmigo.destroiJanela();
					
				}
				else
					JOptionPane.showConfirmDialog(null, "Não existe esse usuário cadastrado!");
				     
				 
				 
				 
				 */
		            
		     }
					
	}

	private static class BotaoExcluirActionListener implements ActionListener {
		
		
		private OperacaoJanela janela = null;
	
		
		
		public BotaoExcluirActionListener(OperacaoJanela janela) {
			
			this.janela = janela;
        
		}
		
		 public void actionPerformed(ActionEvent evt) {
	        		        	
	         /**
	          * PONHA AQUI O EVENTO DO BOTAO ADICIONAR
	          */
			 
			/*if(control.excluiCliente(cliente)){
				janela.getJButtonExcluir().setVisible(false);
				janela.limparFormulario();
				cliente = null;
			}*/
			/*
			int id = Presenter.getInterListaAmigos().getUsuario().getId(); 
			System.out.print("Meu id :" + id);
			Vector<Amigos> usuario = new Vector<Amigos>();
			
			usuario.add(new Amigos(1,id,null));
			
			PrtServer prt = new PrtServer(null,interAdicionarAmigo.getUsuarioParaAdicionar(),null,3,1);
			prt.setAmigos(usuario);
			
			prt = Cliente.adicionarAmigo(prt);
			if(prt != null){
				
				Presenter.getInterListaAmigos().updateLista(prt.getAmigos());
				//Presenter.getInterListaAmigos().podeMexer(true);
				interAdicionarAmigo.destroiJanela();
				
			}
			else
				JOptionPane.showConfirmDialog(null, "Não existe esse usuário cadastrado!");
			     
			 
			 
			 */
			 
	            
	     }
			
	}

	private static class JTextSoNumeroFocusListenet implements FocusListener{

		@Override
		public void focusGained(FocusEvent e) {
			// TODO Auto-generated method stub
			
		}

		@Override
		public void focusLost(FocusEvent e) {
			// TODO Auto-generated method stub
			/*String numero = ((JTextField)e.getComponent()).getText();
			
			if(!control.isNumero(numero)){
				Mensagem.mensagem(7, null,null);
				((JTextField)e.getComponent()).setBackground(Color.red);
				((JTextField)e.getComponent()).setText("");
				((JTextField)e.getComponent()).grabFocus();
			}else{
				((JTextField)e.getComponent()).setBackground(Color.white);
			}*/
			
		}
    	
    }

//####################################################################################################################

/*	private static class BotaoLogarActionListener implements ActionListener {
		
		/**
		 * essa interface permite os seguintes métodos:
		 * 
		 * getSenha();
		 * getUsuario();
		 * setListenerBotaoLogar();
		 */
		/*private InterfaceLogin interLogin = null;
	
		
		
		public BotaoLogarActionListener(InterfaceLogin interLogin) {
			
			this.interLogin = interLogin;
        
		}
		
		 public void actionPerformed(ActionEvent evt) {
	        		        	
	         /**
	          * PONHA AQUI O EVENTO DO BOTAO LOGAR
	          */
			
			 	
		/*	 
				cli = new Cliente();
			
				//
				PrtServer prtServer = cli.msnInicial(new PrtServer(cli.ipHost(),interLogin.getUsuario(), interLogin.getSenha(),1,1));
				if(prtServer!= null){
					
					//ThreadServerClient threadServerClient = new ThreadServerClient();
					//threadServerClient.run();
					
					interLogin.destroiJanela();
					Presenter.criaJanelaListaAmigos();
					Presenter.getInterListaAmigos().setUsuario(prtServer);
					Presenter.getInterListaAmigos().preenchaLista(prtServer.getAmigos());
					
					
				}
				else{
					JOptionPane.showConfirmDialog(null,"Login e/ou senha incorreto(s)!", "Msn Informa" , 2);
					interLogin.mostreComponentesParticipar(true);
					//criar botao que fica visivel quando ele erra senha
					//"participar"
					//verifica se jah existe, se tá vazio
					//metodo no banco adicionar usuario
					//
				}
					
				
			
			 
			 
	            
	     }
			
	}
	
	
	
	
	
	
	
	private static class BotaoParticiparActionListener implements ActionListener {
		
		
		private InterfaceLogin interLogin = null;
	
		
		
		public BotaoParticiparActionListener(InterfaceLogin interLogin) {
			
			this.interLogin = interLogin;
        
		}
		
		public void actionPerformed(ActionEvent evt) {
	        		        	
	         /**
	          * PONHA AQUI O EVENTO DO BOTAO PARTICIPAR
	          */
			
		/*	
			String nick = interLogin.getNick().trim();
			String login = interLogin.getUsuario().trim();
			String senha = interLogin.getSenha().trim();
			
			if(nick.length() != 0 && login.length() != 0 && senha.length() != 0){
				PrtServer msg = new PrtServer(null,interLogin.getUsuario(),interLogin.getSenha(),4,0);
				msg.setNick(nick);
				if(cli.adicionarUsuario(msg) == null)
					JOptionPane.showMessageDialog(null, "Usuário já existe!", "Msn Informa", 1,null);
				
				else{
					JOptionPane.showMessageDialog(null, "Usuário adicionado com sucesso!", "Msn Informa", 1,null);
					interLogin.mostreComponentesParticipar(false);
				}
			}
			else
				JOptionPane.showMessageDialog(null, "Preencha todos os campos!", "Msn Informa", 1,null);
					
			 		
		}
				
			
			 
			 
	            
	}
			
	
	
	
	
	
	
	//####################################################################################################################
	
	
	/**
	 * 
	 * @author shara
	 *
	 *	LISTENERS JANELA LISTA AMIGOS
	 */
	
	
	
	
	
	/*
	private static class BotaoEditarActionListener implements ActionListener {
		
		
		private InterfaceListaAmigos interListaAmigo = null;
	
		
		
		public BotaoEditarActionListener(InterfaceListaAmigos interListaAmigo) {
			
			this.interListaAmigo = interListaAmigo;
        
		}
		
		 public void actionPerformed(ActionEvent evt) {
	        		        	
	         /**
	          * PONHA AQUI O EVENTO DO BOTAO DESCONECTAR
	          */
			//String ip_client, String login, String senha
	/*		interListaAmigo.getUsuario().setTipo(2);
			interListaAmigo.getUsuario().setStatus(0);
			Cliente.enviarMsgParaSair(interListaAmigo.getUsuario());
			System.out.print(interListaAmigo.getUsuario().getLogin() + interListaAmigo.getUsuario().getNick() + interListaAmigo.getUsuario().getTipo());
			//interListaAmigo.destroiJanela(); 
			Presenter.fecharPrograma();
			
			 
			 
			 
	            
	     }
			
	}
	
	
	
	
	
	
	private static class BotaoAdicionarDaListaActionListener implements ActionListener {
		
		
		private InterfaceListaAmigos interListaAmigo = null;
	
		
		
		public BotaoAdicionarDaListaActionListener(InterfaceListaAmigos interListaAmigo) {
			
			this.interListaAmigo = interListaAmigo;
        
		}
		
		 public void actionPerformed(ActionEvent evt) {
	        		        	
	         /**
	          * PONHA AQUI O EVENTO DO BOTAO ADICIONAR
	          */
	/*		
			Presenter.criaJanelaAdicionarAmigo();
			//interListaAmigo.podeMexer(false);
			 
			 
	            
	     }
			
	}
	
	


	
	
	
     //####################################################################################################################
	
	
	/**
	 * 
	 * @author shara
	 *
	 *	LISTENERS JANELA BATE PAPO
	 */
	
/*	private static class BotaoEnviarActionListener implements ActionListener {
		
		
		private InterfaceBatePapo interBatePapo = null;
	
		
		
		public BotaoEnviarActionListener(InterfaceBatePapo interBatePapo) {
			
			this.interBatePapo = interBatePapo;
        
		}
		
		 public void actionPerformed(ActionEvent evt) {
	        		        	
	         /**
	          * PONHA AQUI O EVENTO DO BOTAO ENVIAR
	          */
			
		/*	 cli.enviarMsg(new PrtServer(interBatePapo.getUsuario(),Presenter.getInterListaAmigos().getUsuario().getId(),interBatePapo.enviarMsg(),2),interBatePapo.getAmigo());
			 //cli.enviarMsg(new PrtServer(interBatePapo.getUsuario(),interBatePapo.enviarMsg(),2),interBatePapo.getAmigo());
			 interBatePapo.imprimirMsg();
			     
			 
			 
			 
			 
	            
	     }
			
	}
	
	
	
	/*private static class BotaoEnviarArqActionListener implements ActionListener {
		
		
		private InterfaceBatePapo interBatePapo = null;
	
		
		
		public BotaoEnviarArqActionListener(InterfaceBatePapo interBatePapo) {
			
			this.interBatePapo = interBatePapo;
        
		}
		             
	     

		@Override
		public void actionPerformed(ActionEvent arg0) {
			// TODO Auto-generated method stub
			
			 /**
	          * PONHA AQUI O EVENTO DO BOTAO ENVIAR ARQUIVO
	          */
			
		/*	PrtServer mens = new PrtServer(interBatePapo.getUsuario(),0,null,8);
			mens.setIp_client(interBatePapo.getAmigo().getIp());
			
			Cliente.enviarArquivo(mens);
			
			
			
		}
			
	}*/
	/*
	
	private static class BotaoFecharActionListener implements ActionListener {
		
		
		private InterfaceBatePapo interBatePapo = null;
	
		
		
		public BotaoFecharActionListener(InterfaceBatePapo interBatePapo) {
			
			this.interBatePapo = interBatePapo;
        
		}
		             
	     

		@Override
		public void actionPerformed(ActionEvent arg0) {
			// TODO Auto-generated method stub
			
			 /**
	          * PONHA AQUI O EVENTO DO BOTAO FECHAR
	          */
			
			
	/*		String tituloJanela= interBatePapo.getTituloJanela();
			
			int tam = cli.getVetorQuantBatePapo().size();
			
			for(int i = 0; i < tam; i++){
			
				if(cli.getVetorQuantBatePapo().get(i).getTituloJanela().equals(tituloJanela)){
					
					cli.getVetorQuantBatePapo().get(i).destroiJanela();
					cli.getVetorQuantBatePapo().remove(i);
					break;
					
				}
			
			
			}
			
			
		}
			
	}
	
	*/
	
	
	
	
	
	//####################################################################################################################
	
	
	/**
	 * 
	 * @author shara
	 *
	 *	LISTENERS JANELA ADICIONAR AMIGO
	 */
}
